' 🟡 DECLARATIONS
CONST pi2# = _PI(2) , _
side_size% = 501 , _
pie_center% = (side_size% - 1) / 2 , _
pie_radius% = pie_center% - 2 , _
paint_pos_radius% = pie_radius% - 5
DIM slice_sum# , _
slice_pct# , _
color&
DECLARE SUB DoRead()
DECLARE SUB DoChartPhase(phase%)
' 🟡 MAIN PROGRAM
SCREEN _NEWIMAGE(side_size%, side_size%, 12) : COLOR ,15 : CLS
CALL DoChartPhase(1)
CALL DoChartPhase(2)
END
' 🟡 DATA
' slice%, color&
DATA 14, 1
DATA 20, 12
DATA 7, 7
DATA 38, 2
DATA 15, 13
DATA 1, 4
DATA 5, 14
DATA -1
' 🟡 SUBROUTINES
SUB DoRead()
READ slice_pct#, color&
END SUB
SUB DoChartPhase(phase%)
RESTORE
slice_sum# = 0 : CALL DoRead()
DO
CIRCLE (pie_center%,pie_center%), pie_radius%, CHOOSE(phase%, 0, 15) , - pi2# * slice_sum# / 100, - pi2# * (slice_pct# + slice_sum#) / 100
IF phase% = 1 THEN
PSET (pie_center%,pie_center%), 0
DRAW "BTA" + (INT( _R2D( ( pi2# * (slice_pct#+slice_sum#)/100 ) ) ) - 2) + " R " + STR$(paint_pos_radius%)
PAINT (POINT(0),POINT(1)), color&, 0
END IF
slice_sum# = slice_sum# + slice_pct#
READ slice_pct#, color&
LOOP UNTIL slice_pct# = -1
END SUB